**************************************************************************************
	;Header frs File-linken

	IFD	Flag_project
Flag_InkaPara	set 1
	ENDC
	IFND	Flag_InkaPara
Flag_InkaPara	set 0
	ENDC
	IFEQ	Flag_InkaPara
Flag_InkaPara	set 1
	include	Nutz_project
	ELSEIF
**************************************************************************************

			rsreset
ILax_Softpos		rs.w	1	;SoftPosition dieser Ebene
ILax_Wait		rs.w	1	;Y_Position fr Wait
ILax_Offs_to_Soft	rs.w	1	;ModuloWert,der andere Gfx initialisiert
ILax_Pos_Val		rs.w	1	;Bere Pos  ScreenPos*Val/16
ILax_Pos_Divu		rs.w	1	;Wie gro ist Loop
ILax_Own_Speed		rs.w	1	;eigener Speed des Parallax
ILax_ColTab		rs.w	1	;Tabelle in denen Col1-7 steht
ILAX_ENTRYLENGTH	rs.w	0
ILAX_END		=	-1

			rsreset
ISplit_Wait		rs.w	1
ISplit_Program		rs.l	1
ISplit_XPos		rs.w	1
ISplit_YPos		rs.w	1
ISplit_Coltab		rs.w	1
ISplit_YSize		rs.w	1
ISplit_LENGTH		rs.w	0

		rsset	Task_Buffer
Inka_CopperList1	rs.b	20*6
Inka_CopperList2	rs.b	20*6
ICopper_Buffer		rs.l	1
ICopper_Help		rs.b	6
ICopper_TabPointer	rs.l	1
IYPos_Pointer		rs.l	1
IYPos_Buffer		rs.l	1
IYPos_Table1		rs.w	66
IYPos_Table2		rs.w	66
IFade_Struktur		rs.b	FADE_SIZEOF+(60+42)*6
IVBL_Handler		rs.l	1
IBalken_Color		rs.w	1
ISplit_Buffer		rs.b	20*ISplit_LENGTH
IStone_YPos		rs.w	1
IGreen_YPos		rs.w	1
Lava_YPos		rs.w	1
Lava_XPos		rs.w	1
Lava_anverz		rs.b	1
Lava_anpos		rs.b	1

GREEN_GFX	EQU	64+80
STONE_GFX	EQU	64
BAR_GFX		EQU	0
LAVA_GFX	EQU	64+80+64
LAVA_LOOP_GFX	EQU	64+80+64+32

GREEN_IDENT	EQU	-1
STONE_IDENT	EQU	+1

MakeInkaPara:
	tst.b	Dont_render_Parallax(a6)
	bne	.do_only_color

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
;	Wasseroberflche darstellen ???
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
;	Hinterste Ebene berechnen
		lea	ISplit_Buffer(a6),a4

	move.w	PARABase(a6),d0
	move.w	d0,d1
	sub.w	#224,d1
	ble.s	.set
	lsr.w	#1,d1
	sub.w	d1,d0
.set:
	move.w	d0,IStone_YPos(a6)

		move.w	Scr_Y_Level_Pos(a6),d0
		lsr.w	#2,d0
		and.w	#63,d0
		move.w	d0,IGreen_YPos(a6)

		move.w	Scr_Y_Level_Pos(a6),d1
		lsr.w	#1,d1
		moveq	#0,d0
		move.w	IStone_YPos(a6),d0
		sub.w	Scr_Y_Level_Pos(a6),d0
		add.w	d1,d0
		ble.s	.start_stones

		move.w	Scr_X_Level_Pos(a6),d3
		lsr.w	#2,d3
		and.w	#63,d3
		neg.w	d3

		;Erster Split, ist immer in Zeile ->0.

		move.w	IGreen_YPos(a6),d1
		sub.w	Scr_Y_Level_Pos(a6),d1			;In dieser Zeile muss der Split sein.
		move.w	d1,d2					;Berechnen, wie die Grafik verschoben werden muss.
		neg.w	d2
		and.w	#63,d2
		add.w	#GREEN_GFX,d2

		neg.w	d1
		and.w	#63,d1
		neg.w	d1

		clr.w	ISplit_Wait(a4)
		move.w	d2,ISplit_YPos(a4)
		move.w	d3,ISplit_XPos(a4)
		clr.w	ISplit_YSize(a4)
		adda.w	#ISplit_LENGTH,a4

.green_loop:
		add.w	#64,d1
		sub.w	#64,d2

		cmp.w	d0,d1
		bge.s	.cont_stones

		cmp.w	#224,d1
		bge	.playfield_ready

		move.w	d1,ISplit_Wait(a4)
		move.w	d2,ISplit_YPos(a4)
		move.w	d3,ISplit_XPos(a4)
		move.w	d1,ISplit_YSize(a4)
		move.l	#Copper_InkaSplit_NoCols,ISplit_Program(a4)
		adda.w	#ISplit_LENGTH,a4

		bra.s	.green_loop

.start_stones:
		move.w	Scr_X_Level_Pos(a6),d3
		lsr.w	#1,d3
		and.w	#63,d3
		neg.w	d3

		neg.w	d0
		divu	#80,d0
		swap	d0
		neg.w	d0

		move.w	#STONE_GFX,d2
		sub.w	d0,d2

		clr.w	ISplit_Wait(a4)
		move.w	d2,ISplit_YPos(a4)
		move.w	d3,ISplit_XPos(a4)
		clr.w	ISplit_YSize(a4)
		adda.w	#ISplit_LENGTH,a4

		bra.s	.stone_loop

.cont_stones:
		move.w	Scr_X_Level_Pos(a6),d3
		lsr.w	#1,d3
		and.w	#63,d3
		neg.w	d3

		move.w	#STONE_GFX,d2
		sub.w	d0,d2

		;--Splits in Tabelle eintragen!

		move.w	d0,ISplit_Wait(a4)
		move.w	d2,ISplit_YPos(a4)
		move.w	d3,ISplit_XPos(a4)
		move.w	d0,ISplit_YSize(a4)
		move.l	#Copper_InkaSplit_NoCols,ISplit_Program(a4)
		adda.w	#ISplit_LENGTH,a4

.stone_loop:
		add.w	#80,d0
		sub.w	#80,d2

		cmp.w	#224,d0
		bge.s	.playfield_ready

		move.w	d0,ISplit_Wait(a4)
		move.w	d2,ISplit_YPos(a4)
		move.w	d3,ISplit_XPos(a4)
		move.w	d0,ISplit_YSize(a4)
		move.l	#Copper_InkaSplit_NoCols,ISplit_Program(a4)
		adda.w	#ISplit_LENGTH,a4

		bra	.stone_loop		

.playfield_ready:
	move.w	#-1,(a4)		;Splitliste abschliessen.

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
;	Balken positionen berechnen

	moveq	#0,d3

	move.w	Scr_X_Level_Pos(a6),d4
	addq.w	#1,d4
	neg.w	d4
	move.w	d4,d5
	lsr.w	#1,d4
	lsr.w	#2,d5
	add.w	d5,d4
	and.w	#63,d4

	moveq	#0,d0
	move.w	Scr_Y_Level_Pos(a6),d0
	addq.w	#1,d0
	neg.w	d0
	move.w	d0,d1
	lsr.w	#1,d0
	lsr.w	#2,d1
	add.w	d1,d0

	divu	#288,d0
	swap	d0			;An dieser Position befindet sich der Balken!

	bsr	.calc_balken

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
;	Lava Split einrechnen

	move.w	Scr_X_Level_Pos(a6),d1
	and.w	#63,d1

	subq.b	#1,Lava_anverz(a6)
	bpl.s	.no_anim
	move.b	#10,Lava_anverz(a6)
	eor.b	#32,Lava_anpos(a6)
.no_anim:
	moveq	#0,d0
	move.b	Lava_anpos(a6),d0
	add.w	d1,d0
	neg.w	d0
	move.w	d0,Lava_XPos(a6)

	move.w	LAVABase(a6),d0
	sub.w	Scr_Y_Level_Pos(a6),d0
	bmi.s	.complete_lava

	cmp.w	#224,d0
	bge	.no_lava

	moveq	#1,d1
	bsr	.insert_split

	move.w	#LAVA_GFX,d2
	sub.w	d0,d2

		move.w	d0,ISplit_Wait(a0)
		move.w	d2,ISplit_YPos(a0)
		move.w	Lava_XPos(a6),ISplit_XPos(a0)
		move.w	d0,ISplit_YSize(a0)
		move.l	#Copper_InkaSplit_NoCols,ISplit_Program(a0)
		adda.w	#ISplit_LENGTH,a0

	add.w	#32,d0
	add.w	#LAVA_LOOP_GFX-LAVA_GFX-32,d2

.lava_loop:
	add.w	#16,d0
	sub.w	#16,d2
	cmp.w	#224,d0
	bge.s	.lava_end

		move.w	d0,ISplit_Wait(a0)
		move.w	d2,ISplit_YPos(a0)
		move.w	Lava_XPos(a6),ISplit_XPos(a0)
		move.w	d0,ISplit_YSize(a0)
		move.l	#Copper_InkaSplit_NoCols,ISplit_Program(a0)
		adda.w	#ISplit_LENGTH,a0
	bra.s	.lava_loop

	;Die Lava hat den oberen Screenrand schon erreicht.

.complete_lava:
	cmp.w	#-48,d0
	ble.s	.set_white

	move.w	#LAVA_GFX,d2
	sub.w	d0,d2

	lea	ISplit_Buffer(a6),a0

	clr.w	ISplit_Wait(a0)
	move.w	d2,ISplit_YPos(a0)
		move.w	Lava_XPos(a6),ISplit_XPos(a0)
		clr.w	ISplit_YSize(a0)
		adda.w	#ISplit_LENGTH,a0
	add.w	#32,d0
	add.w	#LAVA_LOOP_GFX-LAVA_GFX-32,d2

	bra.s	.lava_loop

	;Die Lave steht so hoch, da der ganze Screen weiss ist!
.set_white:
	moveq	#-16,d0
	lea	ISplit_Buffer(a6),a0
	move.w	#LAVA_LOOP_GFX+16,d2
	bra.s	.lava_loop

.lava_end:
	move.w	#-1,(a0)				;Hier endet die Tabelle.

.no_lava:


	move.w	Water_YPos(a6),d0				;Y-Pos der Wasser-oberflche.
	sub.w	Scr_Y_Level_Pos(a6),d0
	move.w	d0,Water_SpritePos(a6)
	bgt.s	.check_lower_border

	move.l	#ISet_Dark_Color,IVBL_Handler(a6)
	bra.s	.no_other

.check_lower_border:
	move.l	#Set_Nothing,IVBL_Handler(a6)
	cmp.w	#224,d0
	bge.s	.no_other

	moveq	#2,d1

	bsr	.insert_split
	move.w	d0,ISplit_Wait(a0)
	move.l	#Copper_InkaWater,ISplit_Program(a0)
	tst.w	d7
	bne.s	.no_other

	;Es war ein overwrite, Positionen mitsetzen

	move.l	#Copper_InkaWaterSplit,ISplit_Program(a0)

.no_other:

	;Tabelle in Copperlist umrechnen!
.Splits_ready:
	lea	ISplit_Buffer(a6),a0
	move.l	IYPos_Buffer(a6),a1
	move.l	ICopper_Buffer(a6),a2

	addq.l	#4,a2			;Init-Routine berspringen

	move.w	ISplit_YPos(a0),(a1)+
	move.w	ISplit_XPos(a0),(a1)+
	move.w	ISplit_Coltab(a0),(a1)+
	adda.w	#ISplit_LENGTH,a0

.split_create_loop:
	move.w	ISplit_Wait(a0),(a2)
	cmp.w	#224,(a2)
	bhs.s	.finish
	move.l	ISplit_Program(a0),2(a2)

	move.w	ISplit_YPos(a0),(a1)+
	move.w	ISplit_XPos(a0),(a1)+
	move.w	ISplit_Coltab(a0),(a1)+

	adda.w	#ISplit_LENGTH,a0

	addq.l	#6,a2

	bra	.split_create_loop

.finish:

	move.w	#$00ff,(a2)+		;CList abschliessen
	move.l	#Int_Nop,(a2)

	jsr	Show_WaterSprites

	move.l	IYPos_Buffer(a6),a0
	move.l	IYPos_Pointer(a6),IYPos_Buffer(a6)
	move.l	a0,IYPos_Pointer(a6)
	move.l	ICopper_Buffer(a6),a0
	move.l	Copper_List(a6),ICopper_Buffer(a6)
	move.l	a0,Copper_List(a6)

	bsr	Check_Lava_Collision

.do_only_color:
	lea	IFade_Struktur(a6),a0
	bsr	Call_Transformation2

	rts

*************************************************************************************************
*******	Balken Routine									 ********
*************************************************************************************************
	;Input:
	;d0 = Y-Pos des Balkens
	;d4 = X-Pos des Balkens


.calc_balken:
	clr.w	IBalken_Color(a6)
	move.w	d0,-(sp)
	add.w	#64,d0

	moveq	#0,d6			;Flag frs Split-lschen

	tst.w	d0
	beq.s	.no_lower_split
	cmp.w	#223,d0
	blt.s	.normal_lower_split

	cmp.w	#288,d0
	ble.s	.no_lower_split
	sub.w	#288,d0			;Balken ist am oberen Rand!

.normal_lower_split
	moveq	#1,d1			;Split-Hhe

	bsr	.insert_split		;Split einfgen oder kopieren.


	;Richtige YPos fr den nchsten Split errechnen!

	move.w	ISplit_YPos(a0),d5

	tst.w	d7			;Wars ein Overwrite ??
	beq.s	.dont_use_new_colors

					;X-Position und Farbe des letzten Splits benutzen
	move.w	ISplit_YPos-ISplit_LENGTH(a0),d5
	move.w	ISplit_XPos-ISplit_LENGTH(a0),ISplit_XPos(a0)
	move.w	ISplit_Coltab-ISplit_LENGTH(a0),ISplit_Coltab(a0)

.dont_use_new_colors:
	move.w	d0,ISplit_Wait(a0)
	move.w	d1,ISplit_YSize(a0)
	move.w	d5,ISplit_YPos(a0)
	move.l	#Copper_InkaSplit_NoCols,ISplit_Program(a0)
	move.w	ISplit_Coltab(a0),IBalken_Color(a6)

	moveq	#1,d6			;Es gibt einen unteren Split
	move.l	a0,a5			;Adresse in a5.

.no_lower_split:
	move.w	(sp)+,d0

	cmp.w	#223,d0
	blt.s	.do_normal_split

	cmp.w	#224,d0
	ble	.no_split

	;Der Balken fngt in der obersten Zeile an!

	lea	ISplit_Buffer(a6),a0

	sub.w	#288,d0
	neg.w	d0
	add.w	#BAR_GFX,d0
	move.w	d0,ISplit_YPos(a0)
	move.w	d4,ISplit_XPos(a0)
	move.l	#Copper_InkaSplit_NoCols,ISplit_Program(a0)
	move.w	IBalken_Color(a6),ISplit_Coltab(a0)
	bra	.check_splits

.do_normal_split:

	moveq	#1,d1			;Split-Hhe

	bsr	.insert_split		;Split einfgen oder kopieren.

	move.w	d0,ISplit_Wait(a0)
	move.w	d1,ISplit_YSize(a0)

	move.w	d4,ISplit_XPos(a0)
	neg.w	d0
	add.w	#BAR_GFX,d0
	move.w	d0,ISplit_YPos(a0)
	move.l	#Copper_InkaSplit_NoCols,ISplit_Program(a0)
	move.w	IBalken_Color(a6),ISplit_Coltab(a0)

	;Gegebenenfalls die zwischen oberem und unterem Split liegenden anderen Splits lschen!

.check_splits:
	tst.w	d6			;Gibt es einen unteren???
	beq.s	.clear_to_end_of_table	;Nein, bis Ende der Tabelle lschen.

.check_again:
	lea	ISplit_LENGTH(a0),a1
	cmp.l	a5,a1			;Ist der End-Split direkt drunter ???
	beq.s	.no_split		;Ja, wir sind fertig!

	bsr	.remove_split		;Nein, der Split mu weg!
	lea	-ISplit_LENGTH(a5),a5
	bra.s	.check_again

	bra.s	.no_split

.clear_to_end_of_table:			;Dieser Split mu der letzte sein, alle anderen lschen.
	move.w	#-1,ISplit_LENGTH(a0)

.no_split:
	rts

*************************************************************************************************
*******	Split Support Routinen								 ********
*************************************************************************************************

	;a1 = Adresse des zu lschenden Splits.
.remove_split:
	lea	ISplit_Buffer+15*ISplit_LENGTH(a6),a2
.remove_loop:
	cmp.l	a1,a2
	beq.s	.remove_ready
	move.l	ISplit_LENGTH(a1),(a1)
	move.l	ISplit_LENGTH+4(a1),4(a1)
	move.l	ISplit_LENGTH+8(a1),8(a1)
	move.w	ISplit_LENGTH+12(a1),12(a1)
	lea	ISplit_LENGTH(a1),a1
	bra	.remove_loop

.remove_ready:
	rts

	;d0 = 1.Zeile des neuen Splits.
	;d1 = Hhe des neuen Splits (Nur die Hhe des HBLs einrechnen)

.insert_split:
	moveq	#0,d7					;Overwrite-flag lschen
	add.w	d0,d1					;letzte Zeile des Splits ausrechnen.
	lea	ISplit_Buffer-ISplit_LENGTH(a6),a0
.search:
	adda.w	#ISplit_LENGTH,a0
	tst.w	ISplit_Wait(a0)				;Ende der Tabelle erreicht, einfgen!
	bmi.s	.insert
	cmp.w	ISplit_Wait(a0),d0
	beq.s	.over_write				;Die Stelle ist gleich, berschreiben.
	blt.s	.found
	cmp.w	ISplit_YSize(a0),d0			;Der neue Split berlappt den alten,
	blt.s	.over_write				;der alte mu berschrieben werden!
	bra.s	.search

.found:
	cmp.w	ISplit_Wait(a0),d1			;Der neue Split berlappt den alten,
	bge.s	.over_write				;der alte mu berschrieben werden!

.insert:
	st	d7					;War ein insert!
	lea	ISplit_LENGTH(a5),a5			;Der untere Split hat sich ggf. verschoben!
	lea	ISplit_Buffer+14*ISplit_LENGTH(a6),a1
.insert_loop:
	move.l	(a1),ISplit_LENGTH(a1)
	move.l	4(a1),ISplit_LENGTH+4(a1)
	move.l	8(a1),ISplit_LENGTH+8(a1)
	move.w	12(a1),ISplit_LENGTH+12(a1)
	cmp.l	a1,a0
	bge.s	.over_write
	lea	-ISplit_LENGTH(a1),a1
	bra.s	.insert_loop
.over_write:
	rts

*************************************************************************************************
*******	Lava Handler Routinen								 ********
*************************************************************************************************


Check_Lava_Collision:
		move	LAVABase(a6),d0
		sub	Scr_Y_Level_Pos(a6),d0
		bmi	.NOKOLL
		cmp	#224,d0
		bhi	.NOKOLL
		move	d0,d2
		*----*>LAVA ON SCREEN

		*--*>Make TIMEt DEAD
		move	TEMET_Y_Position(a6),d1
		sub	Scr_Y_Level_Pos(a6),d1
		add	#40,d1
		cmp	d0,d1
		blo.s	.NOKOLL
		*--*>TIMET Hit BY LAVA
		move.b	#-6,TEMET_Speed_Y(a6)
		clr.w	TEMET_FLASH_JUMPER(a6)
		move	#NORMAL,TEMET_Status(a6)
		move	#80,d5
		move	d2,-(sp)
		lea	(a6),a2
		jsr	Sub_TEMET_Hitpoint
		move	(sp)+,d2

.NOKOLL:
		rts

*************************************************************************************************
*******	HBL Handler									 ********
*************************************************************************************************

Copper_InkaSplit_NoCols:
	move.l	#$40000010+$00020000,$c00004		;Vertikaler Split
	move.w	ICopper_Help(a6),$c00000

	move.w	#$2700,sr

	movem.l	a0/d0-d1,-(sp)

	move.l	Copper_Pointer(a6),a0
	move.w	(a0)+,d0			;In Dieser Zeile wird der Nchste Ausgelst!
	move.l	(a0)+,Int_HBlank+2(a6)
	move.l	a0,Copper_Pointer(a6)
	move.w	(a0),d1
	sub.w	d0,d1
	subq.w	#1,d1
	and.w	#$ff,d1
	or.w	#$8a00,d1
	move.w	d1,$c00004

	move.l	#$40000000+$30020003,$c00004		;Horizontaler Split
	move.w	ICopper_Help+2(a6),$c00000

	move.l	ICopper_TabPointer(a6),a0
	move.l	(a0)+,ICopper_Help(a6)
	move.w	(a0)+,ICopper_Help+4(a6)
	move.l	a0,ICopper_TabPointer(a6)

	movem.l	(sp)+,a0/d0-d1
	rte

Copper_InitInka:
	move.l	a0,-(sp)

	move.l	IYPos_Pointer(a6),a0
	move.l	#$40000010+$00020000,$c00004
	move.w	(a0)+,$c00000
	move.l	#$40000000+$30020003,$c00004
	move.w	(a0)+,$c00000
	move.w	(a0)+,d0			;Color-List
	move.l	(a0)+,ICopper_Help(a6)
	move.w	(a0)+,ICopper_Help+4(a6)
	move.l	a0,ICopper_TabPointer(a6)

	move.l	IVBL_Handler(a6),a0
	jsr	(a0)

	move.l	(sp)+,a0
	rts

Copper_InkaWaterSplit:
	move.l	#$40000010+$00020000,$c00004		;Vertikaler Split
	move.w	ICopper_Help(a6),$c00000
	move.l	#$40000000+$30020003,$c00004		;Horizontaler Split
	move.w	ICopper_Help+2(a6),$c00000

Copper_InkaWater:
	move.l	Water_Color(a6),$c00004
	move.w	#$2700,sr
	movem.l	a0/d0-d1,-(sp)

	lea	$c00004,a0
	move.l	#$c0000080,HBL_Help(a6)
	move.l	#$81348f02,(a0)
	move.l	#$932a9400,(a0)
	move.l	#$95009600+($10000*(IFade_Struktur+Fade_Palette+WorkRam)>>1)&$ff0000+((IFade_Struktur+Fade_Palette+WorkRam)>>9)&$ff,(a0)
	move.w	#$9700+((IFade_Struktur+Fade_Palette+WorkRam)>>17)&$ff,(a0)
	move.w	HBL_Help(a6),(a0)
	move.w	HBL_Help+2(a6),(a0)
	move.w	#$8124,(a0)

	move.l	ICopper_TabPointer(a6),a0
	move.l	(a0)+,ICopper_Help(a6)
	move.w	(a0)+,ICopper_Help+4(a6)
	move.l	a0,ICopper_TabPointer(a6)

	move.l	#$81648700,$c00004

	move.l	Copper_Pointer(a6),a0
	move.w	(a0)+,d0			;In Dieser Zeile wird der Nchste Ausgelst!
	move.l	(a0)+,Int_HBlank+2(a6)
	move.l	a0,Copper_Pointer(a6)
	move.w	(a0),d1
	sub.w	d0,d1
	subq.w	#1,d1
	or.w	#$8a00,d1
	move.w	d1,$c00004

	movem.l	(sp)+,a0/d0-d1
	rte

ISet_Dark_Color:
	lea	$c00004,a0
	move.l	#$c0000080,HBL_Help(a6)
	move.l	#$81748f02,(a0)
	move.l	#$932a9400,(a0)
	move.l	#$95009600+($10000*(IFade_Struktur+Fade_Palette+WorkRam)>>1)&$ff0000+((IFade_Struktur+Fade_Palette+WorkRam)>>9)&$ff,(a0)
	move.w	#$9700+((IFade_Struktur+Fade_Palette+WorkRam)>>17)&$ff,(a0)
	move.w	HBL_Help(a6),(a0)
	move.w	HBL_Help+2(a6),(a0)
	move.w	#$8164,(a0)
	rts

Inka_Para_Palette:
		dc.w	$0000,$02CA,$0088,$0026,$0420,$00C4,$00A0,$0040
		dc.w	$0AAA,$068A,$004A,$0046,$0024,$0A86,$0844,$0020

		dc.w	$08A0,$0AC6,$08A0,$0460,$0020,$0AC4,$0AA0,$0A40
		dc.w	$0840,$00CA,$006A,$0046,$0042,$0ACA,$0AC2,$0A80

		dc.w	$0000,$0C88,$0ECC,$0846,$000E,$000C,$000A,$0006	;Mr-Nutz
		dc.w	$0000,$0EEE

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
;	Parallax Initialisierung

Inka_PBase	= Inka_ParaVRam/32

;-------------- Initialisiert Parallax-Playfield
Init_InkaParallax:

	move.w	#$2700,sr

	move.l	#$40000010+$00020000,$c00004
	move.w	#$0000,$c00000			;Ypos auf 0 initialisieren.
	move.l	#$40000000+$30020003,$c00004

	move	#$8f02,$c00004

	move	#$c000,d0

	lea	inka_parablock1(pc),a0		;Adresse des Blocks
	moveq	#32-1,d7			;Hhe des Blocks
	moveq	#8-1,d6				;Breite des Blocks
	moveq	#8-1,d5				;Sooft nebeneinander darstellen!

	bsr	.copy_block

	;Create CopperLists

	lea	Inka_CopperList1(a6),a0
	lea	Inka_CopperList2(a6),a1

	move.l	#Copper_InitInka,(a0)+
	move.l	#Copper_InitInka,(a1)+

	move.w	#$ff,(a0)+
	move.w	#$ff,(a1)+
	move.l	#Int_Nop,(a0)+
	move.l	#Int_Nop,(a1)+

	lea	IYPos_Table1(a6),a0
	lea	IYPos_Table2(a6),a1
	move.l	a0,IYPos_Pointer(a6)
	move.l	a1,IYPos_Buffer(a6)
	moveq	#66-1,d7
.clear:
	clr.w	(a0)+
	clr.w	(a1)+
	dbf	d7,.clear

	move.l	#Init_InkaParaFadeOut,Init_ParaFadeOut(a6)
	move.l	#Set_Nothing,IVBL_Handler(a6)
	move.l	#IFade_Struktur+Fade_Palette+64+WorkRam,UnderWaterColors(a6)

	move.w	#$8b00,$c00004
	sf	Scr_SplitScroll(a6)

	move.w	#$2300,sr

	lea	IFade_Struktur(a6),a0
	lea	Black_Coltab,a1
	lea	Inka_Para_Palette(pc),a2

	move.w	#42-1,d0
	bsr	Init_Transformation

	lea	Main_Rout_Table+4(a6),a0
	lea	MakeInkaPara(pc),a1
	jsr	Insert_Main_Rout

	move.l	#-1,a0
	jsr	Search_Mickey_Main
	move.l	#Make_WaterLevel,(a5)+
	move.l	#-1,(a5)

	jsr	Init_WaterEffekt
	move.w	#$a000+Under_WaterVRam/32,Water_Anim(a6)

	move.b	#10,Lava_anverz(a6)
	clr.b	Lava_anpos(a6)

	move.l	#Inka_CopperList1+WorkRam,Copper_List(a6)
	move.l	#Inka_CopperList2+WorkRam,ICopper_Buffer(a6)

	rts

.copy_block:
.loop2:
	jsr	SetVRamAdress

	move.w	d5,d4
.loop1:
	move.l	a0,a1
	move.w	d6,d3
.loop0:
	move	(a1)+,d1
	add.w	#Inka_PBase,d1
	move.w	d1,$c00000
	dbf	d3,.loop0
	dbf	d4,.loop1

	lea	16(a0),a0
	add	#$80,d0
	dbf	d7,.loop2
	rts

Init_InkaParaFadeOut:
	lea	IFade_Struktur(a6),a0
	lea	Inka_Para_Palette(pc),a1
	lea	Black_Coltab,a2

	move.w	#42-1,d0
	jmp	Init_Transformation

inka_parablock1:	incbin	work:sega/sources/mr_nutz/binary/inka/inka_para.map

	ENDC
*NEONNEONNEONNEONNEONNEON*
